// 父类 ：公共属性和方法
function Person(name,age,friends){
    this.name = name,
    this.age = age
    this.friends = friends
}

Person.prototype.eating = function(){
    console.log(this.name + "eating")
}

//子类：特有的属性和方法
function Student(name,age,friends,sno){
    
    Person.call(this,name,age,friends)

    this.sno = sno
}

var p = new Person()

Student.prototype = p

Student.prototype.studying = function(){
    console.log(this.name + "studying~~")
}

var stu1 = new Student("why",18,["kobe"],1111)
var stu2 = new Student("kone",30,["james"],1112)
stu1.friends.push("ssss")
console.log(stu1)
console.log(stu2)

//强调：借用构造函数也是有弊端
// 1.第一个弊端 Person函数至少会被调用两次
// 2.第二个弊端 stu的原型对象上会多出一些属性，但是这些属性是没有存在的必要